import numpy as np

if __name__ == '__main__':
    print(np.__version__)
    # 声明numpy的向量（速度更快,只能存储同一数据类型）
    vec = np.array([1, 2, 3, 4, 5])
    vec[0] = 666
    print(vec)
    # 创建零向量
    print(np.zeros(5))  # 默认为浮点型
    # 创建1向量
    print(np.ones(5))
    # 创建全x的向量
    print(np.full(5, 666))

    # 查看长度
    print('size = ', vec.size)
    print('size = ', len(vec))

    # 查看元素（与python列表操作一样）
    print('element = ', vec[0])
    print('element = ', vec[-1])
    print('element = ', vec[-2])
    print('element = ', vec[-3])
    print('element = ', vec[-4])
    print('element = ', vec[-5])

    # 查看所有元素
    print(vec, type(vec))
    print(vec.tolist())  # 变成列表查看
    print(type(vec.tolist()))

    # 查看维度
    print('shape = ', vec.shape)
    print('ndim = ', vec.ndim)

    # 查看数据类型
    print('dtype = ', vec.dtype)

    # np.array的基本运算
    print('加法',vec + vec)
    print('减法',vec - vec)
    print('数乘',vec * 3)
    print('数乘',3 * vec)
    print('点乘方法1',sum(vec * np.array([0,1,2,3,4])))
    print('点乘方法2',vec.dot(np.array([0,1,2,3,4])))
    print('求模：',np.linalg.norm(vec))
    print('规范化（没有封装,注意除0异常）：',vec / np.linalg.norm(vec))
    print(np.linalg.norm(vec / np.linalg.norm(vec)))
    print(isinstance(vec,np.ndarray),type(vec))